8 表格转换技术
在excel中的Power Query工具提供了透视列,逆透视列,合并查询,多表合并等关于表格的转换操作。虽然excel中操作起来更简单,但灵活度却没有Pandas高。
1.8.1 列数据转行方向(二维表转一维表)
列索引数据转成行索引数据,是指将分布在列方向展示的数据,转换到行方向来展示数据,可以使用df.stack()和df.melt()两个函数完成,最后的转换结果可以是DataFrame表格,也可以是Series数据。
无论表格的列方向是单层索引,还是分层索引,都可以对整个层级执行转换,可以使用df.stack()函数完成。结构如下:
df.stack(level=1,dropna=True)
level:指定转换知行方向的列索引层级,可以是索引号或标签,默认转换最后层级
dropna:是否删除转换后有缺失值的行,默认删除
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.01 列数据转行方向(二维表转一维表).xlsx" , index_col =0)
#需要设置索引
print (df)
t=df.stack().to_frame().reset_index().rename( columns ={
"level_1":"科目",0:"分数" })
print (t)
返回:
语文 | 数学 | 英语 | |
---|---|---|---|
科目 | |||
张三 | 64 | 74 | 88 |
李四 | 73 | 66 | 91 |
王五 | 90 | 68 | 79 |
科目 | 科目 | 分数 | |
---|---|---|---|
0 | 张三 | 语文 | 64 |
1 | 张三 | 数学 | 74 |
2 | 张三 | 英语 | 88 |
3 | 李四 | 语文 | 73 |
4 | 李四 | 数学 | 66 |
5 | 李四 | 英语 | 91 |
6 | 王五 | 语文 | 90 |
7 | 王五 | 数学 | 68 |
8 | 王五 | 英语 | 79 |